
#include <evalsoc.h>
#include "echeck.h"


     /*
    * @name   CRC_Check
    * @brief  CRC校验
    * @param  CRC_Ptr->数组指针，LEN->长度
    * @retval CRC校验值      
*/
uint16_t CRC_Check(uint8_t *CRC_Ptr,uint8_t LEN)
{
    uint16_t CRC_Value = 0;
    uint8_t  i         = 0;
    uint8_t  m         = 0;

    CRC_Value = 0xffff;
    for(i=0;i<LEN;i++)  //LEN为数组长度
    {
        CRC_Value ^= *(CRC_Ptr+i);
        for(m=0;m<8;m++)
        {
            if(CRC_Value & 0x0001)
                CRC_Value = (CRC_Value >> 1) ^ 0xA001;
            else
                CRC_Value = (CRC_Value >> 1);
        }
    }
    CRC_Value = ((CRC_Value >> 8) |(CRC_Value << 8)); //交换高低字节

    return CRC_Value;
}
